///////////////////////////////////////////////////////////////////////////////
///
/// Cylan Client Core
/// Copyright (C) Shenzhen Cylan Tech. Co., Ltd. 2012
///
/// @file       ServerRes.h
/// @brief      Server  API
///
///////////////////////////////////////////////////////////////////////////////
#ifndef CYLAN_SERVER_H
#define CYLAN_SERVER_H

#ifdef __cplusplus
extern "C"{
#endif

#include "Core/Core.h"


typedef struct tagHOSTSRESOURCE
{
	const char* szResName;
	const char* szResAddr;
}RESOURCEHOSTS;
/**
 * @struct SERVER_RESOURCE
 * @brief SERVER_RESOURCE资源信息
 */
typedef struct SERVER_RESOURCE
{
    const char* szClient_Ip;				///SERVER资源中 虚拟网卡分配到的ip地址
    const char* szClient_Mask;		///SERVER资源中 虚拟网卡分配到的子网掩码
    const char* szVirtual_Ip;			///SERVER资源中 加入openvpn规则的ip地址
    const char* szVirtual_Mask;		///SERVER资源中 与szVirtual_ip运算的子网地址
    //const char* szServerUrl;				///服务端的URL地址
    int  iUniquePort;					     ///< SERVER资源中 是否开启端口合一
    int  iPort;									 ///< SERVER资源中 非端口合一使用的端口号
    int  iUsedUdp;							 ///< SERVER资源中 是否启用UDP隧道
    int  iTunnelMode;								///< SERVER资源中 是否启用全隧道模式
    int iSuidPort;								///< SERVER资源中
    int iResCount;							///<SERVER资源中，resource_hosts数组大小
    int iInternetForbid;					///<SERVER资源中, 外网隔离标志.
    RESOURCEHOSTS *pResHosts;
}SERVER_RESOURCE;
/**
 * @fn int ServerResourceCount(const CHANDLE Session)
 * @brief 返回会话可用的TCP_TUNNELS资源个数
 * @param Session 已登陆的Session句柄
 * @return 可用的TCP_TUNNELS资源量

int ServerResourceCount(const CHANDLE Session); */

/**
 * @fn CC_STATUS ServerResourceInfo(const CHANDLE Session, int Index, TCP_TUNNELS_RESOURCE *Resource, int *Size)
 * @brief 获取Server资源信息
 * @param Session 已登陆的Session句柄
 * @param Index 资源索引
 * @param Resource 调用者提供的缓冲区以保存资源信息
 * @param Size Resource参数的缓冲区大小. 如果提供的缓冲区太小, 会返回所需的缓冲区大小字节数.
 * @return Server资源信息
 * @retval ERR_SUCCESS 成功
 * @retval ERR_NOT_FOUND 资源索引超出可用资源个数范围
 * @retval ERR_BUFFER_TOO_SMALL 提供的Resource缓冲区太小
 */
CC_STATUS ServerResourceInfo(const CHANDLE Session, int Index, SERVER_RESOURCE *Resource, int *Size);

#ifdef __cplusplus
}
#endif

#endif /* CYLAN_SERVER_H */